Webアプリケーション開発における根本的なボトルネックは、 同期実行 I/O操作の同期実行にある。スクリプトが同期リクエストを行うと、ブラウザのメインスレッドがネットワークの固有の遅延に束縛され、『世界停止』状態が発生する。
1. ブロッキング問題
同期リクエスト( false フラグを使用して XMLHttpRequest.open)はブラウザのスレッドを乗っ取る。これにより、サーバーからの応答までユーザー操作、アニメーション、レンダリングすべてが中断される。ユーザにとってはタブが凍結しているように見える。
2. ロジックの分岐
"凍結を超える"には、線形モデルから 非同期スタイルへの移行が必要となる。同期プログラミングは厳密な上から下への順序に従う一方、非同期処理は イベントハンドラ データ到着を検知するための仕組みに依存しており、スクリプトが即座に実行を継続できるようになる。
3. UI応答性の必須要件
現代のプロジェクト要件では、文書のUIを凍結させずにファイル読み込みやデータ取得を処理することが求められる。これにより、複雑なリモート操作中でもカーソルが活性化され、ボタンがクリック可能であることが保証される。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>